﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace SOM.Interfaces.Objects
{
  [GuidAttribute("91B3DEB3-70C1-42B1-AAEE-AEA3CE38EDE8"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
  public interface IRoom
  {
    void LoadRoom(int RoomID);

    void SendToDatabase(string server, string table, string SchemeFilePath = "");
    void GetFromDatabase(string server, int ID, string table, string SchemeFilePath = "");

    bool Delete();
    bool Place(ref SOM.Helper.Types.Point3d Origin);

    object GetCustomAttribute(string AttributeName, SOM.Helper.enums.ReturnType ReturnType, out int iRet);

    double A_BASE_OFFSET { get; set; }
    double A_DEAD_LOAD { get; set; }
    double A_HEIGHT { get; set; }
    double A_PLASTER_THICKNESS { get; set; }
    double A_TOP_OFFSET { get; set; }

    double[] A_SHAPE_POINTX { get; set; }
    double[] A_SHAPE_POINTY { get; set; }

    int A_CONNECT { get; set; }
    int A_FLOOR_FIN_TYPE { get; set; }
    int A_NEDGE { get; set; }
    int A_SLAB_FIN_TYPE { get; set; }
    int A_ROOM_FIN_TYPE { get; set; }

    string A_BOUND_KEY { get; set; }
    string A_BOUNDARY { get; set; }
    string A_CATEGORY { get; set; }
    string A_FIN_CATEGORY { get; set; }
    string A_GROUP { get; set; }
    string A_NAME1 { get; set; }
    string A_NAME2 { get; set; }
    string A_NAME3 { get; set; }
    string A_PROTOTYPE { get; set; }
    string A_USE { get; set; }
    string A_USE_KEY { get; set; }

    int[] WallIds { get; set; }
    int[] OpeningIds { get; set; }

    void ReloadSubObjects();

    SOM.Interfaces.Lists.IOpeningList Openings { get; set; }
    SOM.Interfaces.Lists.IWallList Walls { get; set; }
  }
}
